package cn.fl.capital.transform;

import cn.cmm.base.framework.utils.CollectionUtils;
import cn.fl.capital.dto.CapFundDTO;
import cn.fl.capital.vo.CapFundVO;

import java.util.ArrayList;
import java.util.List;

/**
 * @Description: 客户资金表 转换器
 * VO是客户端传递数据到服务端进行转换的数据
 * VO转换数据变成DTO传递到服务端
 * VO不能在服务端出现
 */
public class CapFundVOTransform {


    /**
     * DTO 转  VO
     *
     * @param dto CapFundDTO
     * @return CapFundVO
     */
    public static CapFundVO toVO(CapFundDTO dto) {
        CapFundVO vo = null;
        if (dto != null) {
            vo = new CapFundVO();
            vo.setId(dto.getId());
            vo.setCstId(dto.getCstId());//客户ID
            vo.setCstNm(dto.getCstNm());//CST_NM
            vo.setCode(dto.getCode());//资金编号
            vo.setComeCode(dto.getComeCode());//来款账户
            vo.setComeName(dto.getComeName());//来款人
            vo.setComeBankName(dto.getComeBankName());//来款银行名称
            vo.setAcceptCode(dto.getAcceptCode());//收款账户
            vo.setAcceptName(dto.getAcceptName());//收款人
            vo.setAmount(dto.getAmount());//收款金额[核销实收金额]
            vo.setAvailableAmount(dto.getAvailableAmount());//可用金额
            vo.setUsedAmount(dto.getUsedAmount());//已用金额
            vo.setFundStatusCd(dto.getFundStatusCd());//资金状态集合 CAP0004：0.未分解1.分解中2.已分解3.已作废
            vo.setAcceptDate(dto.getAcceptDate());//资金到账日期
            vo.setAcceptActualDate(dto.getAcceptActualDate());//实际到账日期
            vo.setDocketRem(dto.getDocketRem());//摘要
            vo.setIdentifyOperator(dto.getIdentifyOperator());//认款操作人
            vo.setIdentifyTime(dto.getIdentifyTime());//认款操作时间
            vo.setIdentifyOperatorNm(dto.getIdentifyOperatorNm());//认款操作人名称
            vo.setFundSourcesCd(dto.getFundSourcesCd());//资金来源CAP0002：0-正常来款 1- 保证金转入 2-保险保证金转入 3-保险首期款转入 4-保险退还客户 5- 扣除保险保证金 6-风险保证金转入
            vo.setFundInputCd(dto.getFundInputCd());//资金录入方式 1.手工录入 2.批量导入3.代扣导入4.APP录入
            vo.setFundBelongOrgCd(dto.getFundBelongOrgCd());//所属事业部组织架构？
            vo.setBankCardNo(dto.getBankCardNo());//代扣账号
            vo.setFundTypCd(dto.getFundTypCd());//资金种类(CAP0014) 0.重卡资金 1.保险租金
            vo.setCertificateCd(dto.getCertificateCd());//凭证种类-数据字典
            vo.setCertificateCode(dto.getCertificateCode());//凭证号码
            vo.setBusinessCode(dto.getBusinessCode());//业务编号
            vo.setBorrowingLogoCd(dto.getBorrowingLogoCd());//借贷标志-数据字典
            vo.setMoneyType(dto.getMoneyType());//币种-数据字典
            vo.setExpStatusCd(dto.getExpStatusCd());//导出状态-数据字典：0-未导出 1-已导出
            vo.setRelationPayId(dto.getRelationPayId());//关联付款ID
            vo.setIsDel(dto.getIsDel());//是否删除（1：是，0：否）
            vo.setVersion(dto.getVersion());//版本
            vo.setFundPid(dto.getFundPid());

            vo.setCrtTm(dto.getCrtTm());//创建时间
            vo.setCrtUsrId(dto.getCrtUsrId());//创建人
            vo.setMdfTm(dto.getMdfTm());//修改时间
            vo.setMdfUsrId(dto.getMdfUsrId());//修改人

            vo.setFundStatusCdNm(dto.getFundStatusCdNm());//资金状态
            vo.setCrtUsrNm(dto.getCrtUsrNm());//创建人
            vo.setFundBelongOrgCdNm(dto.getFundBelongOrgCdNm());//所属事业部
            vo.setCapTypCd(dto.getCapTypCd()); //资金类型
            vo.setUseAmt(dto.getUseAmt());//使用金额
            vo.setIsAutoCharge(dto.getIsAutoCharge());//是否自动划扣(1.是 0.否)
            vo.setFundChnCd(dto.getFundChnCd()); //来款渠道
            // 保证金处理方式
            vo.setHandleWayCd(dto.getHandleWayCd());
            vo.setIsRevert(dto.getIsRevert());
            vo.setRevertDt(dto.getRevertDt());
            vo.setCapAmt(dto.getCapAmt());
            vo.setIntrAmt(dto.getIntrAmt());
            vo.setPenaltyAmt(dto.getPenaltyAmt());
            vo.setTotalAmt(dto.getTotalAmt());
        }
        return vo;
    }

    /**
     * VO 转 DTO
     *
     * @param vo CapFundVO
     * @return CapFundDTO
     */
    public static CapFundDTO toDTO(CapFundVO vo) {
        CapFundDTO dto = null;
        if (vo != null) {
            dto = new CapFundDTO();
            dto.setId(vo.getId());
            dto.setCstId(vo.getCstId());//客户ID
            dto.setCstNm(vo.getCstNm());//CST_NM
            dto.setCode(vo.getCode());//资金编号
            dto.setComeCode(vo.getComeCode());//来款账户
            dto.setComeName(vo.getComeName());//来款人
            dto.setAcceptCode(vo.getAcceptCode());//收款账户
            dto.setAcceptName(vo.getAcceptName());//收款人
            dto.setAmount(vo.getAmount());//收款金额[核销实收金额]
            dto.setAvailableAmount(vo.getAvailableAmount());//可用金额
            dto.setUsedAmount(vo.getUsedAmount());//已用金额
            dto.setFundStatusCd(vo.getFundStatusCd());//资金状态集合 CAP0004：0.未分解1.分解中2.已分解3.已作废
            dto.setAcceptDate(vo.getAcceptDate());//资金到账日期
            dto.setAcceptActualDate(vo.getAcceptActualDate());//实际到账日期
            dto.setDocketRem(vo.getDocketRem());//摘要
            dto.setIdentifyOperator(vo.getIdentifyOperator());//认款操作人
            dto.setIdentifyTime(vo.getIdentifyTime());//认款操作时间
            dto.setIdentifyOperatorNm(vo.getIdentifyOperatorNm());//认款操作人名称
            dto.setFundSourcesCd(vo.getFundSourcesCd());//资金来源CAP0002：0-正常来款 1- 保证金转入 2-保险保证金转入 3-保险首期款转入 4-保险退还客户 5- 扣除保险保证金 6-风险保证金转入
            dto.setFundInputCd(vo.getFundInputCd());//资金录入方式 1.手工录入 2.批量导入3.代扣导入4.APP录入
            dto.setFundBelongOrgCd(vo.getFundBelongOrgCd());//所属事业部组织架构？
            dto.setBankCardNo(vo.getBankCardNo());//代扣账号
            dto.setFundTypCd(vo.getFundTypCd());//资金种类(CAP0014) 0.重卡资金 1.保险租金
            dto.setCertificateCd(vo.getCertificateCd());//凭证种类-数据字典
            dto.setCertificateCode(vo.getCertificateCode());//凭证号码
            dto.setBusinessCode(vo.getBusinessCode());//业务编号
            dto.setBorrowingLogoCd(vo.getBorrowingLogoCd());//借贷标志-数据字典
            dto.setMoneyType(vo.getMoneyType());//币种-数据字典
            dto.setExpStatusCd(vo.getExpStatusCd());//导出状态-数据字典：0-未导出 1-已导出
            dto.setRelationPayId(vo.getRelationPayId());//关联付款ID
            dto.setIsDel(vo.getIsDel());//是否删除（1：是，0：否）
            dto.setVersion(vo.getVersion());//版本
            dto.setIdList(vo.getIdList());
            dto.setFundPid(vo.getFundPid());

            dto.setCrtTm(vo.getCrtTm());//创建时间
            dto.setCrtUsrId(vo.getCrtUsrId());//创建人
            dto.setMdfTm(vo.getMdfTm());//修改时间
            dto.setMdfUsrId(vo.getMdfUsrId());//修改人
            dto.setIsNeedVf(vo.getIsNeedVf());//认款后是否需要核销该笔来款
            dto.setCapTypCd(vo.getCapTypCd());//资金类型
            dto.setPaySchIds(vo.getPaySchIds());
            dto.setUseAmt(vo.getUseAmt());//使用金额
            dto.setIsAutoCharge(vo.getIsAutoCharge());//是否自动划扣(1.是 0.否)
            dto.setFundChnCd(vo.getFundChnCd()); //来款渠道
            // 保证金处理方式
            dto.setHandleWayCd(vo.getHandleWayCd());
            dto.setIsRevert(vo.getIsRevert());
            dto.setRevertDt(vo.getRevertDt());
            dto.setCapAmt(vo.getCapAmt());
            dto.setIntrAmt(vo.getIntrAmt());
            dto.setPenaltyAmt(vo.getPenaltyAmt());
            dto.setTotalAmt(vo.getTotalAmt());
        }
        return dto;
    }

    /**
     * DTO集合 转 VO集合
     *
     * @param list List<CapFund>
     * @return List<CapFundDTO>
     */
    public static List<CapFundVO> toVOList(List<CapFundDTO> list) {
        List<CapFundVO> voList = new ArrayList<CapFundVO>();
        if (CollectionUtils.isNotEmpty(list)) {
            for (CapFundDTO dto : list) {
                voList.add(toVO(dto));
            }
        }
        return voList;
    }

    public static List<CapFundDTO> toDTOList(List<CapFundVO> list) {
        List<CapFundDTO> dtoList = new ArrayList<CapFundDTO>();
        if (CollectionUtils.isNotEmpty(list)) {
            for (CapFundVO vo : list) {
                dtoList.add(toDTO(vo));
            }
        }
        return dtoList;
    }
}
